From 9db4accf9c30e29979e3e012f0a8b3ef624bb690 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 7 Apr 2011 20:19:30 +0200 Subject: [PATCH] Make gtkclipboard.c:clipboard_get_timestamp multi-backend safe We can't just check for the backend defines, we have to do runtime checks too. --- gtk/gtkclipboard.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c index e918495ffc..5dc09e59e8 100644 --- a/gtk/gtkclipboard.c +++ b/gtk/gtkclipboard.c @@ -34,6 +34,10 @@ #include "x11/gdkx.h" #endif +#ifdef GDK_WINDOWING_BROADWAY +#include "broadway/gdkbroadway.h" +#endif + #ifdef GDK_WINDOWING_WIN32 #include "win32/gdkwin32.h" #endif @@ -412,14 +416,35 @@ clipboard_get_timestamp (GtkClipboard *clipboard) { GtkWidget *clipboard_widget = get_clipboard_widget (clipboard->display); guint32 timestamp = gtk_get_current_event_time (); + GdkWindow *window; if (timestamp == GDK_CURRENT_TIME) { + window = gtk_widget_get_window (clipboard_widget); #ifdef GDK_WINDOWING_X11 - timestamp = gdk_x11_get_server_time (gtk_widget_get_window (clipboard_widget)); -#elif defined GDK_WINDOWING_WIN32 - timestamp = GetMessageTime (); + if (GDK_IS_X11_WINDOW (window)) + { + timestamp = gdk_x11_get_server_time (gtk_widget_get_window (clipboard_widget)); + } + else #endif +#if defined GDK_WINDOWING_WIN32 + if (GDK_IS_WIN32_WINDOW (window)) + { + timestamp = GetMessageTime (); + } + else +#endif +#if defined GDK_WINDOWING_BROADWAY + if (GDK_IS_BROADWAY_WINDOW (window)) + { + timestamp = gdk_broadway_get_last_seen_time (window); + } + else +#endif + { + /* No implementation */ + } } else { -- 2.30.2